package com.albaba.designpattern.chain_of_responsibility.text_002;

import javax.xml.crypto.Data;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.SimpleFormatter;

/**
 * @author zx
 * @version 1.0
 * @description 审核申请接口
 * @date 2025/2/24 21:47
 */
public class AuthController {

    /**
     * 审核方法
     *
     * @param name     申请人姓名
     * @param orderId  申请单Id
     * @param authDate 申请时间
     * @return AuthInfo
     */
    public AuthInfo doAuth(String name, String orderId, Date authDate) throws ParseException {

        // 三级审批
        Date date = null;

        // 查询是否存在审核信息,虚拟三级审核人ID：100013
        date = AuthService.queryAuthInfo("100013", orderId);

        if (date == null) {
            return new AuthInfo("0001", "单号：" + orderId, " 状态：待三级审批负责人进行审批");
        }

        // 查询是否存在审核信息,虚拟二级审核人ID：100012，
        // 二级审核人审核申请单的时间范围为：11-01~11-10
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        if (authDate.after(sdf.parse("2025-02-24 00:00:00"))
                && authDate.before(sdf.parse("2025-02-27 23:59:59"))) {

            date = AuthService.queryAuthInfo("100012", orderId);
            if (date == null) {
                return new AuthInfo("0001", "单号：" + orderId, " 状态：待二级审批负责人进行审批");
            }
        }


        // 查询是否存在审核信息,虚拟一级审核人ID：100013，
        // 一级审核人审核申请单的时间范围为：11-01~11-10
        if (authDate.after(sdf.parse("2025-03-01 00:00:00"))
                && authDate.before(sdf.parse("2025-03-28 23:59:59"))) {

            date = AuthService.queryAuthInfo("100013", orderId);
            if (date == null) {
                return new AuthInfo("0001", "单号：" + orderId, " 状态：待一级审批负责人进行审批");
            }
        }

        return new AuthInfo("0001", "单号：" + orderId, "审批人：" + name, " 状态：审批完成");
    }

}
